<?php
/*******************************************************************************

    FinalsClub.org is a platform for students and faculty to collaborate
    and share their knowledge with the world.

    Copyright (C) 2009  Andrew Magliozzi
 
    This file is a part of FinalsClub.org.

    FinalsClub.org is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
    To contact FinalsClub.org, send an email to info@finalsclub.org, or
    send mail to Finals Club, c/o Veritas Tutors, 1132 Massachusetts Avenue,
    Cambridge, MA 02138.

*******************************************************************************/

/**
 * User form for facebook signup
 *
 * @package    form
 * @subpackage users
 */
class UserFacebookForm extends BaseUserForm {
  public function configure() {
  	$this->validatorSchema['email'] = new sfValidatorEmail(array('required' => true), 
		  array('invalid' => 'The email address is invalid', 'required' => 'An email address is required'));
	
  	$this->validatorSchema['username'] = new sfValidatorString(array('required' => true), 
	  array('invalid' => 'The username is invalid', 'required' => 'A username is required'));
	
	$this->validatorSchema->setPostValidator(
	  new sfValidatorPropelUnique(
	  	array('model' => 'User', 'column' => array('username')), array('invalid' => 'The username is already taken')
	  )
	);
	
	$this->mergePostValidator(
	  new sfValidatorPropelUnique(
	  	array('model' => 'User', 'column' => array('email')), array('invalid' => 'The email address is already registered')
	  )
	);
	
	// receive email updates
	$this->widgetSchema['receive_email_updates'] = new sfWidgetFormInputCheckbox(array('value_attribute_value' => 1));
	$this->setDefault('receive_email_updates', false);
	
	// users must agree to the terms of service
	$this->widgetSchema['tos_agreement'] = new sfWidgetFormInputCheckbox(array('value_attribute_value' => 1));
	$this->validatorSchema['tos_agreement'] = new sfValidatorBoolean(
		array('true_values' => array(1), 'false_values' => array(0), 'required' => true),
		array('required' => 'You must agree to the terms of service', 
		'invalid' => 'You must agree to the terms of service'));
	$this->setDefault('tos_agreement', false);
		
	// users must agree to copyright policy
	$this->widgetSchema['copyright_agreement'] = new sfWidgetFormInputHidden();
	$this->validatorSchema['copyright_agreement'] = new sfValidatorPass();
	$this->setDefault('copyright_agreement', false);
	
    $this->validatorSchema->setOption('allow_extra_fields', true);
	$this->validatorSchema->setOption('filter_extra_fields', false);
  }
}
